VC作业题求助,急o(>﹏<)o在线等~~

来源:百度知道 编辑:UC知道 时间:2024/05/18 00:14:33
/*编写函数change(node *pa,int x)。node指向一个链表,根据参数x的值,
使链表中各结点数据域小于x的结点放在链表的前半部,大于等于x的结点放在链表的后半部,
并将x插入这两部分结点之间。
例如,原链表上各结点的数据依次为:3,4,2,1,9,6,5,0,10,6
输入:x=7
经插入新结点后,新链表的各结点数据依次为:3,4,2,1,6,5,0,6,7,9,10
*/
#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"
#include "time.h"
#define N 10
#define NODE struct node
NODE
{
int val;
NODE *next;
};
void *createlink(void)
{
NODE *p1,*p2,*head=NULL;
int i;
for(i=0;i<N;i++)
{
p1=(NODE *)malloc(sizeof(NODE));
p1->val=rand()%11;
p1->next=NULL;
if(head==NULL)
head=p2=p1;
else
{
p2->next=p1;
p2=p1;
}
}
return(head);
}
void freelink(NODE *p)
{
NODE *p1;
while(p)
{
p1=p->next;
free(p);
p=p1;
}
}
void *change(NODE *p

有几个地地方出问题了,一个是main函数调用了print函数p的指向变为了空;另一个是change函数里的while循环里p的指向没的改变;
你自己看吧!具体代码如下:
#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"
#include "time.h"
#define N 10
#define NODE struct node

NODE
{
int val;
NODE *next;
};
//结构体链表

NODE *createlink(void) //返回一个结构体链表,
{
NODE *p1,*p2,*head=NULL;
int i;
for(i=0;i<N;i++)
{
p1=(NODE *)malloc(sizeof(NODE));
p1->val=rand()%11; //产生随机数初始化结构体中成员变量
p1->next=NULL;
if(head==NULL)
head=p2=p1;
else
{
p2->next=p1;
p2=p1;
}
}
return(head);
}

void freelink(NODE *p) //删除结构体链表p
{
NODE *p1;
while(p)
{
p1=p->next;
free(p);
p=p1;
}
}

NODE *change(NODE *p,int n)
{
NODE *h1=NULL,*p1,*p3,*h2=NULL,*p2,*p4,*